利用 pm2
做管理(因為 docker 坑很深 加上來的話會寫不完)
Express 是會執行一個 Process
常駐
const express = require('express')
const app = express()
const port = 3000
app.get('/', (req, res) => {
res.json({title: 'Hello World!'})
})
app.listen(port, () => {
console.log(`Example app listening at http://localhost:${port}`)
})
最簡單的一個 hello world 的程式
如果在 local 端跑起來可以用瀏覽器打開 http://localhost:3000
就會看到 Hello World!
module.exports = {
apps: [
{
name: 'express-demo',
script: 'app.js',
watch: '.',
env: {
NODE_ENV: 'development',
},
},
],
};
stages:
- deployExpress
image: gitlab/dind
services:
- docker:dind
deployExpress:
stage: deployExpress
tags:
- self-runner
only:
- deployDev
script:
- yarn install
- cp "${DEV_ENV}" .env
- pm2 delete ecosystem.config.js
- pm2 start ecosystem.config.js
這是最簡單的範例
這樣直接部署比較簡單
單一程式基本上就可以跑起來了
但是如果是有很多個 Process
需要管理
可能就是另一個管理的篇章
這次都只會講到最基礎的部署邏輯
在 gitlab 上的sidebar 看 CI\CD
就可以看到工作狀態
如果是 pass
的話
利用瀏覽器打開 http://${ip}:3000
就可以看到 Hello World!
的文字
這時候就可以補上其他 route
可以達成最基礎的 API 部署實作